package temp.leetcode.editor.cn;

//给你一个正整数 n ，生成一个包含 1 到 n² 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
//
//
//
// 示例 1：
//
//
//输入：n = 3
//输出：[[1,2,3],[8,9,4],[7,6,5]]
//
//
// 示例 2：
//
//
//输入：n = 1
//输出：[[1]]
//
//
//
//
// 提示：
//
//
// 1 <= n <= 20
//
//
// Related Topics 数组 矩阵 模拟 👍 965 👎 0

/**
 * 螺旋矩阵 II
 *
 * @author saint
 */
class P59_SpiralMatrixIi{
    public static void main(String[] args) {
        Solution solution = new P59_SpiralMatrixIi().new Solution();

    }

    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {


    public int[][] generateMatrix(int n) {
        int[][] direction={{0,1},{1,0},{0,-1},{-1,0}};
        int[][] res = new int[n][n];
        int num=1;
        int row=0;
        int col=0;
        int dir=0;//记录方向
        while(num<=n*n){
            res[row][col]=num;
            int rowm = row+direction[dir][0];
            int colm = col+direction[dir][1];
            if (rowm<0||rowm>=n||colm<0||colm>=n||res[rowm][colm]!=0){
                dir=(dir+1)%4;
            }
            row=row+direction[dir][0];
            col=col+direction[dir][1];
            num++;
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
